

import java.util.Arrays;
//类和对象
class Student{
    //1. 成员变量 ，定义在方法的外部，类的内部
    //1.1静态成员变量   1.2非静态成员变量
    //public String name;
    private String name ;//被private修饰了 只能在当前类中使用
    //public String name = "cc" ;//就地初始化，在生命成员变量量的时候，就直接给出了初始值
                                 //代码编译完成后，编译器会自动将所有的成员初始化的这些语句添加到各个构造函数当中去
    public int age;
    public static String classRoom = "109";
    {
        this.name = "xiaoli";
        this.age = 19;
        System.out.println("实例化代码块");
    }

    //成员方法
    //静态成员方法
    //非静态成员方法
    public void eat(){
        System.out.println(name+"正在吃饭");
        this.show();//this.func() -调用当前对象的方法    this本身代表的是当前对象的引用
    }

    public void show(){
        System.out.println("姓名："+this.name+"年龄"+this.age);
    }
//构造方法
    // 是一个特殊的成员方法 名字必须与类名相同，在创建对象时，编译器自动调用，并且在整个对象的个生命周期只使用一次
    //当一个类没有一个构造方法时，java会自动提供给你一个不带参数的构造方法
    //当一个类当中有一个构造方法时，java就不会再提供给你构造方法了
    //构造方法中可以构成方法的重载--方法名相同，返回值个数或类型不同
    public Student(){
        this("cc",18);//this()调用当前类的其他构造方法 只能在当前的构造方法内部使用
                                  //只能放在第一行
        System.out.println("不带参数的构造方法");

    }
//右键生成 但不能生成不带参数的构造方法
    public Student(String name) {
        this.name = name;
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
/*public Student(String name, int age){
        //this();//上面已经调用了 带两个参数的this（）方法 若在此处调用无参数的this（）会形成环
                 //this不能形成环
        this.name = name;
        this.age=age;
        System.out.println("带有参数的构造方法");
    }*/

    public int getAge() {//可以按住ctr一个一个选
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
public class Test {
    public static void main(String[] args) {
        Student student = new Student();
        Student student2 = new Student("zhao",99);
        student.setName("abcd");//private
        System.out.println(student.getName());//private
        student.show();

      /*  System.out.println(student.name);
        System.out.println(student.age);
        System.out.println(student2.name);
        System.out.println(student2.age);*/
    }
    public static void main1(String[] args) {
        Student student = new Student();//调用了上面的方法

       /* student.name = "liu";
        student.age = 20;
        System.out.println(student.name);
        System.out.println(student.age);
        student.eat();

        Student student2 = new Student();
        student2.name = "zhang";
        student2.age = 22;
        System.out.println(student2.name);
        System.out.println(student2.age);
        student2.eat();*/

    }
}
